home *** CD-ROM | disk | FTP | other *** search
/ Apple II Magazines (DO) / Softdisk Magazette Volume 2, No. 02 (1982-10)(Softdisk)(Side B).zip / Softdisk Magazette Volume 2, No. 02 (1982-10)(Softdisk)(Side B).do / PRINT ROUTINES LISTER.bas < prev    next >
BASIC Source File  |  1996-12-24  |  18KB  |  292 lines

  1. 0  REM <CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H>       <CTRL-M>********************************<CTRL-M>  PRINT FORMATTING SUBROUTINES<CTRL-M>********************************<CTRL-M>  
  2. 1  REM <CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H>       <CTRL-M>********************************<CTRL-M>     DEMONSTRATION PROGRAM<CTRL-M>********************************<CTRL-M>  
  3. 505  TEXT : HOME : SPEED= 255:XX = 1
  4. 510  GOSUB 3000
  5. 999  REM   <CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H>          <CTRL-M>********************************<CTRL-M>       SUBROUTINE LIBRARY<CTRL-M>********************************<CTRL-M>    
  6. 1000  REM    - PRINT SUBROUTINE LIBRARY, PUBLIC SERVICE LAB, NORTH CAROLINA STATE UNIVERSITY
  7. 1001  REM    - IN PASSING VARIABLES NOTE THE FOLLOWING CONVENTIONS:
  8. 1002  REM    V= VALUE; STRING$= STRING
  9. 1003  REM     ARRAY(V) AND STRING$(V) ARE ARRAYS  
  10. 1004  REM    N = NUMBER OF VALUES OR STRINGS
  11. 1005  REM    CW = COLUMN WIDTH OR COLUMN NUMBER
  12. 1006  REM    I,I$,J,J$ = WORK VARIABLES
  13. 1007  REM     NP = NUMBER OF PLACES DESIRED AFTER DECIMAL
  14. 1008  REM  
  15. 1009  REM    - JUSTIFICATION ROUTINES
  16. 1010 I$ = "": FOR I = 1 TO (CW - LEN(STRING$)):I$ = I$ +" ": NEXT : PRINT  RIGHT$(I$ +STRING$,CW): RETURN : REM       - RIGHT JUSTIFICATION ROUTINE FOR STRINGS   
  17. 1011  REM    IN LINE 1010 THE VALUE MUST START OUT AS A STRING FOR LEADING AND TRAILING ZEROS TO BE RETAINED; USE V=VAL(STRING$) TO CONVERT LATER FOR COMPUTATION PURPOSES  
  18. 1012  PRINT  SPC( CW - LEN( STR$(V))); STR$(V): RETURN : REM     RIGHT JUSTIFICATION ROUTINE FOR VARIABLES - LEADING AND TRAILING ZEROS GET DROPPED  
  19. 1014  REM     LINES 1014-1020 ARE A VARIABLE ARRAY RIGHT JUSTIFICATION ROUTINE  
  20. 1015  FOR I = 1 TO N:ARRAY$(I) =  STR$(ARRAY(I))
  21. 1016  GOSUB 1017: PRINT  TAB( CW -J);ARRAY(I): NEXT : RETURN 
  22. 1017 J = 0
  23. 1018 J = J +1: IF J =  LEN(ARRAY$(I))  AND  MID$ (ARRAY$(I),J,1) < >"."  THEN J = J +1: GOTO 1020
  24. 1019  IF  MID$ (ARRAY$(I),J,1) < >"."  THEN 1018
  25. 1020  RETURN 
  26. 1030  REM   - ROUNDING TO A FRACTION
  27. 1031 VI =  INT(V):F = V -VI:F$ = "   "
  28. 1032  IF F >.0625  THEN F$ = "1/8": IF F >.1625  THEN F$ = "1/5": IF F >.225  THEN F$ = "1/4": IF F >.291666667  THEN F$ = "1/3": IF F >.354166667  THEN F$ = "3/8": IF F >.3875  THEN F$ = "2/5": IF F >.45  THEN F$ = "1/2": GOTO 1034
  29. 1033  GOTO 1035
  30. 1034  IF F >.55  THEN F$ = "3/5": IF F >.6125  THEN F$ = "5/8": IF F >.64583  THEN F$ = "2/3": IF F >.7083333  THEN F$ = "3/4": IF F >.775  THEN F$ = "4/5": IF F >.8375  THEN F$ = "7/8": IF F >.9375  THEN F$ = "":VI = VI +1
  31. 1035 VI$ =  STR$(VI): IF VI = 0  THEN VI$ = " "
  32. 1036 STRING$ = VI$ +" " +F$: RETURN : REM    END OF FRACTIONAL ROUNDING
  33. 1040  REM    - CORRECT ROUNDING; NP = NUMBER OF DECIMAL PLACES DESIRED; PASS V AND GET ROUNDED V BACK
  34. 1041 V =  INT(V *10 ^NP +.5)/10 ^NP: RETURN 
  35. 1049  REM  
  36. 1050  REM    - MONEY ROUTINES
  37. 1051  REM     LINES 1051-1060 CONTAIN A SUBROUTINE WHICH FORMATS VALUES AS DOLLARS AND CENTS, TRUNCATING EXTRA DECIMALS AND ADDING THE '$' - PASS V TO GOSUB 1052 AND GET STRING$ BACK
  38. 1052 I$ =  STR$( INT((V +.0001) *100)):I% =  LEN(I$):J$ = "$":I1$ = "":I2$ = ".":I3$ =  RIGHT$(I$,2)
  39. 1053  ON I% GOTO 1054,1055,1059,1059,1059,1059,1059,1059,1059
  40. 1054 I3% = "0" +I3$: GOTO 1060
  41. 1055  IF  LEFT$(I$,1) = "-"  THEN 1057
  42. 1056  GOTO 1060
  43. 1057 I3$ = "0" + RIGHT$(I3$,1)
  44. 1058 I1$ = "-": GOTO 1060
  45. 1059 I1$ =  LEFT$(I$,(I% -2))
  46. 1060 STRING$ = J$ +I1$ +I2$ +I3$: RETURN 
  47. 1070  REM   ALTERNATIVE DOLLAR FORMATTER
  48. 1071 V =  INT(V *100 +.5)/100:STRING$ = "$" + STR$(V):J =  LEN(STRING$): IF J = 1  THEN 1075
  49. 1072  IF  MID$ (STRING$,J -1,1) = "."  THEN STRING$ = STRING$ +"0": GOTO 1076
  50. 1073  IF J <3  THEN 1075
  51. 1074  IF  MID$ (STRING$,J -2,1) = "."  THEN 1076
  52. 1075 STRING$ = STRING$ +".00"
  53. 1076  RETURN 
  54. 1099  REM  
  55. 1100  REM    - STRING FORMATTING ROUTINES
  56. 1101  REM  
  57. 1109  REM      -  LINES 1110 TO 1120 CONTAIN A SUBROUTINE  WHICH WILL FORMAT A LONG STRING (6 LINES) SO WORDS WILL NOT BE SPLIT INAPPROPRIATELY. AT PRESENT IT IS SET FOR DOUBLE-SPACING. TO SINGLE-SPACE REMOVE A PRINT STATEMENT FROM LINE 111
  58. 1110 I = 1
  59. 1111  PRINT :J = 0
  60. 1112 I$ = ""
  61. 1113 J$ =  MID$ (STRING$,I,1):I = I +1: IF I > LEN(STRING$) GOTO 1119
  62. 1114  IF J$ < >" "  THEN I$ = I$ +J$: GOTO 1113
  63. 1115  IF J + LEN(I$) = 40  THEN  PRINT I$;: GOTO 1111
  64. 1116  IF J + LEN(I$) = 39  THEN  PRINT I$: GOTO 1111
  65. 1117 I$ = I$ +" ":J = J + LEN(I$): IF J >40  THEN  PRINT : PRINT :J =  LEN(I$)
  66. 1118  PRINT I$;: GOTO 1112
  67. 1119  IF J + LEN(I$) >40  THEN  PRINT : PRINT 
  68. 1120  PRINT I$; RIGHT$(STRING$,1): RETURN 
  69. 1199  REM  
  70. 1200  REM    - SOUND ROUTINES
  71. 1201  REM  
  72. 1209  REM    - LINES 1210 - 1213 ARE A TYPEWRITER EFFECT WHICH ACCEPTS STRING$ AND PRINTS IT WITH CLICKS
  73. 1210  FOR I = 1 TO  LEN(STRING$): PRINT  MID$ (STRING$,I,1);
  74. 1211  IF  MID$ (STRING$,I,1) = " "  THEN 1213
  75. 1212 J =  PEEK( -16336)
  76. 1213  FOR J = 1 TO 45: NEXT : NEXT : PRINT : RETURN : REM      TYPEWRITER EFFECT
  77. 1219  REM     LINES 1220 - 1223 ARE THE SAME THING, BUT "UNTYPEWRITING" A LINE, ERASING FROM THE RIGHT - STRING$ MAY BE 39 CHARACTERS MAX  - LESS IF NOT STARTED IN COLUMN 1
  78. 1220 :
  79. 1221  VTAB ( PEEK(37)): FOR I =  LEN(STRING$) TO 1  STEP  -1: HTAB I: CALL  -868: FOR J = 1 TO 60: NEXT : REM    - PEEK(37) IS MEMORY LOCATION OF CURSOR VERTICAL POSITION; CALL -868 CLEARS TO END OF LINE
  80. 1222 J =  PEEK( -16336): NEXT : POKE 37, PEEK(37) -1: RETURN 
  81. 1229  REM    - LINES 1230-1234 CONTAIN A TYPEWRITER ROUTINE USING A MOVING CURSOR 
  82. 1230 CURSR$ = "+>": SPEED= 210
  83. 1231  FOR I = 1 TO  LEN(CURSR$):CURSR$ = CURSR$ + CHR$(8): NEXT 
  84. 1232  FOR I = 1 TO  LEN(STRING$): INVERSE : PRINT CURSR$;: NORMAL :I$ =  MID$ (STRING$,I,1): PRINT I$;: IF I$ = " "  OR I$ = "."  THEN  FOR J = 1 TO 25 +150 *(I$ = "."): NEXT 
  85. 1233  IF I$ < >" "  THEN  FOR J = 1 TO 2:K =  PEEK( -16336): NEXT 
  86. 1234  NEXT : CALL  -868: PRINT : SPEED= 255: RETURN 
  87. 1299  REM  
  88. 1300  REM    - TITLE ROUTINES
  89. 1301  REM  
  90. 1310 I =  INT((40 - LEN(STRING$))/2): PRINT  SPC( I);STRING$: RETURN : REM     -  TITLE CENTERING ROUTINE
  91. 1311 L =  PEEK(37):SP$ = "": FOR I = 1 TO 20 - LEN(STRING$)/2:SP$ = SP$ +" ": NEXT :STRING$ = SP$ +STRING$ +SP$: IF  LEN(STRING$)/2 < > INT( LEN(STRING$)/2)  THEN STRING$ = STRING$ +"": REM   - CENTERSPREAD TITLING - SET SO
  92. 1312  IF  LEN(STRING$)/2 < > INT( LEN(STRING$)/2)  THEN STRING$ = STRING$ +" "
  93. 1313  FOR J = 1 TO 20:PR$ =  LEFT$(STRING$,J) + RIGHT$(STRING$,J): VTAB L: HTAB 21 -J: IF SOUND  THEN Q =  PEEK( -16336) + PEEK( -16336)
  94. 1314  PRINT PR$: NEXT : RETURN : REM     CENTERSPREAD TITLING END; VTAB, THEN PASS STRING$ AND (IF DESIRED) SOUND=1 TO 1311
  95. 1315 I =  PEEK(37): FOR J = 1 TO 19 + LEN(STRING$)/2: VTAB I +1: HTAB 40 -J: PRINT  LEFT$(STRING$,J);" ";: FOR K = 1 TO 40: NEXT : NEXT : PRINT : RETURN : REM    - SLIDE TO CENTER
  96. 1316  HOME : FOR X = 5 TO 34  STEP .25: PRINT  TAB(  INT(12 +11 * SIN(X)));STRING$: NEXT : FOR D = 1 TO 3000: NEXT : RETURN : REM    - SINE WAVE TITLE
  97. 1319  REM     - LINES 1320 - 1348 ARE A MOVING WORDS TITLE ROUTINE WHICH ACCEPTS AN EIGHT-WORD (EXACTLY) ARRAY CALLED STRING$(I)
  98. 1320  VTAB 5: HTAB 6: PRINT STRING$(4);
  99. 1321  VTAB 5: HTAB 19: PRINT STRING$(5)
  100. 1322  VTAB 5: HTAB 29: PRINT STRING$(1)
  101. 1323  VTAB 12: HTAB 6: PRINT STRIMG$(3)
  102. 1324  VTAB 12: HTAB 29: PRINT STRING$(2)
  103. 1325  VTAB 23: HTAB 6: PRINT STRING$(6)
  104. 1326  VTAB 23: HTAB 19: PRINT STRING$(8)
  105. 1327  VTAB 23: HTAB 29: PRINT STRING$(7)
  106. 1328  HOME 
  107. 1329  FOR I = 1 TO 2: REM     - NUMBER OF LOOPS
  108. 1330  FOR J = 1 TO 22
  109. 1331  GOSUB 1338: NEXT 
  110. 1333  FOR J = 23 TO 1  STEP  -1
  111. 1334  GOSUB 1338
  112. 1335  NEXT J
  113. 1336  NEXT I
  114. 1337  TEXT : RETURN 
  115. 1338  HOME 
  116. 1339  VTAB 12: HTAB J +6: PRINT STRING$(4);
  117. 1340  HTAB 30 -J: PRINT STRING$(5)
  118. 1341  VTAB J +1: HTAB J +6: PRINT STRING$(1);
  119. 1342  HTAB 30 -J: PRINT STRING$(3);
  120. 1343  HTAB 18: PRINT STRING$(2);
  121. 1344  VTAB 24 -J: HTAB J +6: PRINT STRING$(6);
  122. 1345  HTAB 30 -J: PRINT STRING$(8);
  123. 1346  HTAB 18: PRINT STRING$(7);
  124. 1347  FOR K = 1 TO 50: NEXT : REM     - SEED
  125. 1348  RETURN : REM    - END OF MOVING WORDS TITLE ROUTINE
  126. 1350  HOME :I$ = "": SPEED= 240: REM    - INVERSETITLE PATTERN
  127. 1351  FOR I = 1 TO 50:I$ = I$ +" ": INVERSE : PRINT " ";STRING$;" ";: NORMAL : PRINT I$;: NEXT : SPEED= 255: RETURN 
  128. 1360  REM   - FALLING LEAVES TITLE
  129. 1361 L =  PEEK(37): IF   NOT QQ  THEN  DIM R$(40),DL(40):QQ = 1
  130. 1362  POKE 216,0: FOR X = 0 TO 39:R$(X) = " ":DL(X) = 0: NEXT : FOR X = 1 TO  LEN(STRING$):R$(X) =  MID$ (STRING$,X,1): NEXT : FOR X = 0 TO  LEN(STRING$) -1:DL(X) =  INT(( RND(1) *L) -L): NEXT 
  131. 1363  FOR X = 0 TO  LEN(STRING$):DL(X) = DL(X) +1: IF DL(X) >L  THEN DL(X) = L
  132. 1364  IF DL(X) = 0  THEN DL(X) = 1
  133. 1365  IF DL(X) <1  THEN 1368
  134. 1366  HTAB (X + INT((20 - LEN(STRING$)/2))): VTAB DL(X): PRINT R$(X): IF DL(X) = 1  THEN 1368
  135. 1367  HTAB (X + INT((20 - LEN(STRING$)/2))): VTAB DL(X) -1: PRINT " "
  136. 1368  NEXT 
  137. 1369  FOR X = 0 TO  LEN(STRING$) -1: IF DL(X) < >L  THEN 1363
  138. 1370  NEXT : RETURN : REM   END OF FALLING LEAVES TITLES
  139. 1399  REM  
  140. 1400  REM    - ERASE ROUTINES
  141. 1401  CALL  -958: RETURN : REM    - CLEARS FROM CURSOR TO END/BOTTOM OF TEXT WINDOW
  142. 1402  CALL  -868: RETURN : REM     - CLEARS FROM CURSOR TO END OF LINE (GIVEN TEXT WINDOW)
  143. 1403  CALL  -875: RETURN : REM    - CLEAR ENTIRE TEXT LINE
  144. 1404  FOR I = 1 TO V: CALL  -912: NEXT : REM    - SCROLL UP V LINES 
  145. 1409  REM     ERASE 39-CHARACTER LINE OR LESS FROM RIGHT TO LEFT VIA ROUTINE IN LINE 1410
  146. 1410  VTAB ( PEEK(37)): FOR I =  LEN(STRING$) TO 1  STEP  -1: HTAB I: CALL  -868: FOR J = 1 TO 60: NEXT : NEXT : POKE 37, PEEK(37) -1: RETURN : REM       -  PEEK(37) IS MEMORY LOCATION OF CURSOR VERTICAL POSITION; CALL -868 CLEARS TO E
  147. 1419  REM    - ERASE 40-CHARACTER LINE 0R LESS FROM LEFT TO RIGHT IN LINE 1420 
  148. 1420  VTAB ( PEEK(37)): FOR I = 2 TO 40: POKE 33,I: CALL  -868: FOR J = 1 TO 60: NEXT : NEXT : POKE 37, PEEK(37) -1: RETURN : REM     - POKE 33 SETS TEXT WINDOW WIDTH; CALL -868 CLEARS TO END OF LINE (GIVEN WINDOW); POKE 37 RESETS CURSO
  149. 1421  REM   ***** PAGE WIPES
  150. 1422 X =  INT( RND(1) *9) +1: ON X GOSUB 1423,1424,1425,1427,1430,1432,1434,1436,1440: RETURN : REM    - RANDOM WIPES
  151. 1423  FOR I = 1 TO 20: POKE 32,20 -I: POKE 33,2 *I: HOME : NEXT : RETURN : REM    CENTER OUT WIPE
  152. 1424  FOR I = 1 TO 12: POKE 34,12 -I: POKE 35,12 +I: POKE 33,4 +3 *I: POKE 32,24 -2 *I: CALL  -936: FOR J = 1 TO 18: NEXT : NEXT : RETURN : REM    - EXPANDING BOX WIPE
  153. 1425  FOR I = 1 TO 24: VTAB 24: PRINT : NEXT : HOME : RETURN : REM     - SCROLL UP AND OUT WIPE
  154. 1426  REM  CHECKERBOARD WIPE 1427
  155. 1427  INVERSE : FOR I = 24 TO 1  STEP  -1: VTAB I: FOR J = I - INT(I/2) *2 +1 TO 40  STEP 2: HTAB J: PRINT " ";: NEXT : NEXT : NORMAL : HOME : RETURN : REM    CHECKERBOARD WIPE
  156. 1430  FOR I = 38 TO 0  STEP  -1: POKE 32,I: POKE 33,40 -I: HOME : FOR D = 1 TO 40: NEXT : NEXT : RETURN : REM      -  LEFT-TO-RIGHT WHOLE-SCREEN WIPE  
  157. 1432  FOR I = 2 TO 40: POKE 33,I: HOME : FOR D = 1 TO 40: NEXT : NEXT : RETURN : REM     -  RIGHT-TO-LEFT WHOLE-SCREEN WIPE
  158. 1434  FOR I = 1 TO 24: POKE 35,I: HOME : FOR D = 1 TO 90: NEXT : NEXT : RETURN : REM       -   TOP-TO-BOTTOM WHOLE-SCREEN WIPE
  159. 1436  FOR I = 23 TO 0  STEP  -1: POKE 34,I: HOME : FOR D = 1 TO 60: NEXT : NEXT : RETURN : REM     -  BOTTOM-TO-TOP WHOLE-SCREEN WIPE
  160. 1440  REM   - BEAGLE BROTHERS' HANDY-WIPE SCREEN ERASE
  161. 1441 LO = 1:HI = 24:S = LO
  162. 1442  FOR J = 1 TO 2: FOR I = LO TO HI  STEP S
  163. 1443  INVERSE : VTAB I: PRINT  SPC( 40): NORMAL 
  164. 1444  VTAB I: CALL  -868: NEXT 
  165. 1445 X = LO:LO = HI:HI = X:S = S * -1: NEXT : RETURN 
  166. 1500  REM    - SPECIAL EFFECTS
  167. 1509  REM      -  SCROLL HEADLINES UP TO 255 CHARACTERS VIA LINE 1510
  168. 1510 I =  PEEK(37):I$ = "                                        ":STRING$ = I$ +STRING$ +I$: FOR J = 1 TO  LEN(STRING$) -40: VTAB I: PRINT  MID$ (STRING$,J,40);
  169. 1511  FOR K = 1 TO 90: NEXT : NEXT : PRINT : RETURN 
  170. 1512  HOME : VTAB 3: PRINT STRING$:L =  LEN(STRING$): REM    BANNER DROP AND SCROLL - LINES 1512-1518
  171. 1513  FOR I = 3 TO 12: VTAB I -1: CALL  -868: VTAB I: PRINT STRING$: FOR J = 1 TO 99: NEXT : NEXT 
  172. 1514  IF L <40  THEN  FOR I = L +1 TO 40:STRING$ = STRING$ +" ": NEXT 
  173. 1515 P = P +1: IF P >40  THEN P = 1:J = J +1
  174. 1516  VTAB 12: HTAB 1: PRINT  RIGHT$(STRING$,41 -P);: IF P >1  THEN  PRINT  LEFT$(STRING$,P -1)
  175. 1517  FOR I = 1 TO 50: NEXT : IF J <102  THEN 1515
  176. 1518  RETURN 
  177. 1520 I =  LEN(STRING$): VTAB  PEEK(37) +1: FOR J = I TO 1  STEP  -1: HTAB J: PRINT  MID$ (STRING$,J);: FOR D = 1 TO 90: NEXT : NEXT : RETURN : REM     - REVERSE PRINTING  -  39-CHARACTER STRING MA
  178. 1529  REM      - LINES 1530-34 CONTAIN A TYPING VERTICAL ROUTINE - PASS STRING$ AND CW (COLUMN NUMBER)
  179. 1530  HOME : POKE 32,CW: POKE 33,1: PRINT "  "
  180. 1531  FOR I = 1 TO  LEN(STRING$)
  181. 1532  PRINT  MID$ (STRING$,I,1): REM    - ADD SEMI-COLON HERE FOR SINGLE SPACING OF LETTERS
  182. 1533 J =  PEEK( -16336):J =  PEEK( -16336)
  183. 1534  FOR D = 1 TO 200: NEXT : NEXT : TEXT : RETURN : REM       - TYPING VERTICAL
  184. 1540  REM   <CTRL-J><CTRL-J>DOUBLE BATON ROUTINE        ADAPTED FROM BEAGLE         BROS. TIP BOOK NO. 4.<CTRL-J><CTRL-J>
  185. 1541 CURSR$ = "!/-\":H = 1:C = H: POKE  -16368,0
  186. 1542  VTAB 22: HTAB 8: PRINT STRING$
  187. 1543  VTAB 21: HTAB H: PRINT " "; MID$ (CURSR$,C,1);" ";: FOR I = 1 TO 33: NEXT 
  188. 1544  VTAB 23: HTAB 40 -H: PRINT " "; MID$ (CURSR$,C,1);" ";
  189. 1545 KEY =  PEEK( -16384): IF KEY >31  THEN  RETURN 
  190. 1546 C = C +1 -4 *(C = 4):H = H +1: IF H >39  THEN H = 1: VTAB 21: HTAB 40: PRINT " ";: VTAB 23: HTAB 2: PRINT " ";
  191. 1547  GOTO 1543: REM    END OF BATON ROUTINE
  192. 1550 CURS$ = "!/-\":C = 1:Q$ =  CHR$(34):L =  LEN(CURS$): SPEED= 177
  193. 1551  VTAB 24: PRINT "! ";STRING$;
  194. 1552  VTAB 24: HTAB 1: PRINT  MID$ (CURS$,C,1);
  195. 1553 KEY =  PEEK( -16384): IF KEY <128  THEN C = C +1 -L *(C = L): GOTO 1552
  196. 1554  POKE  -16368,0: SPEED= 255: HOME : RETURN 
  197. 1555  HOME :W = W +1: VTAB 10: HTAB 1 +(W - INT(W/2) *2 = 0): PRINT  SPC( 1);"ANALYZING..."; SPC( 1)
  198. 1556  FOR I = 1 TO 250: NEXT : IF W <10  THEN 1555
  199. 1557  RETURN : REM    - SUBROUTINE DURING ANALYZING
  200. 1600  REM  
  201. 1601  REM    UTILITIES
  202. 1602  REM  
  203. 1610 SEC = SEC +2 *(SEC = 0): FOR I = 1 TO SEC *980: NEXT : RETURN : REM   - PASS SEC=X FOR DELAY LOOP OF X SECONDS; DEFAULT IS 2-SECOND DELAY
  204. 1998  REM <CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H>          <CTRL-M>********************************<CTRL-M>  PUBLIC SERVICE RESEARCH AND<CTRL-M>   COMPUTER LABORATORY, NORTH<CTRL-M>   CAROLINA STATE UNIVERSITY<CTRL-M>********************************<CTRL-M>         
  205. 3000  HOME : PRINT : PRINT "    DEMONSTRATION OF PRINT ROUTINES"
  206. 3010  PRINT "======================================="
  207. 3030  POKE 34,4: PRINT : PRINT 
  208. 3040  PRINT "1. RIGHT JUSTIFICATION OF STRINGS  
  209. 3050  PRINT "2. RIGHT JUSTIFICATION OF VARIABLES 
  210. 3060  PRINT "3. RIGHT JUSTIFICATION OF ARRAYS  
  211. 3065  PRINT "4. CORRECT INTEGER/FRACTIONAL ROUNDING"
  212. 3070  PRINT "5. FORMATTING DOLLARS AND CENTS  
  213. 3080  PRINT "6. FORMAT LONG STRINGS
  214. 3090  PRINT "7. TYPEWRITER SOUND EFFECT
  215. 3100  PRINT "8. UNTYPEWRITER ROUTINE  
  216. 3110  PRINT "9. TYPEWRITER WITH MOVING CURSOR   
  217. 3120  PRINT "10. TITLE CENTERING
  218. 3130  PRINT "11. TITLE SLIDE TO CENTER   
  219. 3135  PRINT "12. SINE WAVE TITLE
  220. 3140  PRINT "13. MOVING WORDS TITLE ROUTINE  
  221. 3145  PRINT "14. INVERSE TITLE PATTERN"
  222. 3150  PRINT "15. CLEAR LINES ON SCREEN"
  223. 3160  PRINT "16. ERASE LINES RIGHT OR LEFT"
  224. 3165  GOSUB 3900
  225. 3170  PRINT "17. SCROLL UP V LINES"
  226. 3180  PRINT "18. SECOND DELAY"
  227. 3190  PRINT "19. CHECKERBOARD ERASE PAGE"
  228. 3200  PRINT "20. WIPES: RANDOM, BOX, CENTER, SCROLL"
  229. 3210  PRINT "21. ERASE SCREEN LEFT TO RIGHT 
  230. 3220  PRINT "22. ERASE SCREEN RIGHT TO LEFT 
  231. 3230  PRINT "23. ERASE SCREEN TOP TO BOTTOM    
  232. 3240  PRINT "24. ERASE SCREEN BOTTOM TO TOP 
  233. 3245  PRINT "25. BEAGLE BROS. HANDYWIPE ERASE"
  234. 3250  PRINT "26. SCROLL ONE ROW HORIZONTALLY  
  235. 3255  PRINT "27. DROP AND SCROLL LINE
  236. 3260  PRINT "28. REVERSE PRINTING
  237. 3270  PRINT "29. SCROLL ONE COLUMN VERTICALLY
  238. 3280  PRINT "30. BATON EFFECT FOOTNOTE  
  239. 3282  PRINT "31. PRESS ANY KEY BATON EFFECT
  240. 3284  PRINT "32. SUBROUTINE DURING ANALYZING"
  241. 3286  VTAB 23: PRINT "      (0 TO QUIT)
  242. 3290  VTAB 22: INPUT "SELECT ROUTINE TO LIST (1 - 32): ";AN$
  243. 3291  IF AN$ = ""  THEN 3290
  244. 3292  IF  ASC( LEFT$(AN$,1)) = 48  THEN 4000
  245. 3294 I =  INT( VAL(AN$) +.5)
  246. 3296  IF I <1  OR I >32  THEN 3290
  247. 3298  TEXT : HOME : VTAB 8
  248. 3300  PRINT : INPUT "ROUTE TO PRINTER? ";PR$
  249. 3305  IF  LEFT$(PR$,1) = "Y"  THEN  PR# 1
  250. 3310  HOME 
  251. 3320  ON I GOSUB 3501,3502,3503,3504,3505,3506,3507,3508,3509,3510,3511,3512,3513,3514,3515,3516,3517,3518,3519,3520,3521,3522,3523,3524,3525,3526,3527,3528,3529,3530,3531,3532
  252. 3330  PR# 0
  253. 3335  GOSUB 3900
  254. 3340  HOME : VTAB 10: INPUT "ANOTHER LISTING?  ";ANSWER$
  255. 3345  IF ANSWER$ = ""  THEN 3000
  256. 3350  IF  LEFT$(ANSWER$,1) = "N"  THEN 4000
  257. 3360  GOTO 3000
  258. 3501  LIST 1010,1011: RETURN 
  259. 3502  LIST 1012,1013: RETURN 
  260. 3503  LIST 1014,1020: RETURN 
  261. 3504  LIST 1040,1041: GOSUB 3900: LIST 1030,1033: GOSUB 3900: LIST 1034,1036: RETURN 
  262. 3505  LIST 1051,1060: GOSUB 3900: LIST 1070,1076: RETURN 
  263. 3506  LIST 1109,1115: GOSUB 3900: LIST 1116,1120: RETURN 
  264. 3507  LIST 1209,1213: RETURN 
  265. 3508  LIST 1219,1222: RETURN 
  266. 3509  LIST 1229,1234: RETURN 
  267. 3510  LIST 1310: GOSUB 3900: LIST 1311,1314: GOSUB 3900: LIST 1360,1365: GOSUB 3900: LIST 1366,1370: RETURN 
  268. 3511  LIST 1315: RETURN 
  269. 3512  LIST 1316: RETURN 
  270. 3513  LIST 1319,1329: GOSUB 3900: LIST 1330,1339: GOSUB 3900: LIST 1340,1348: RETURN 
  271. 3514  LIST 1350,1351: RETURN 
  272. 3515  LIST 1401: PRINT : LIST 1402: PRINT : LIST 1403: RETURN 
  273. 3516  LIST 1408,1410: LIST 1419,1420: RETURN 
  274. 3517  LIST 1404: RETURN 
  275. 3518  LIST 1600,1610: RETURN 
  276. 3519  LIST 1426,1427: RETURN 
  277. 3520  LIST 1422,1425: RETURN 
  278. 3521  LIST 1430: RETURN 
  279. 3522  LIST 1432: RETURN 
  280. 3523  LIST 1434: RETURN 
  281. 3524  LIST 1436: RETURN 
  282. 3525  LIST 1440,1445: RETURN 
  283. 3526  LIST 1509,1511: RETURN 
  284. 3527  LIST 1512,1518: RETURN 
  285. 3528  LIST 1520: RETURN 
  286. 3529  LIST 1529,1534: RETURN 
  287. 3530  LIST 1540,1547: RETURN 
  288. 3531  LIST 1550,1554: RETURN 
  289. 3532  LIST 1555,1557: RETURN 
  290. 3900  VTAB 24: INVERSE : PRINT "TYPE ANY KEY TO CONTINUE.";: NORMAL : GET AN$: HOME : RETURN 
  291. 4000  PRINT  CHR$(4);"RUN MENU"
  292. 4010  CALL 520"MAIN MENU"